package com.cm.projectx.common.entity;

import lombok.Data;
import org.apache.commons.lang3.StringUtils;

import java.util.Arrays;

public class UserContext {

    private static final ThreadLocal<UserInfo> currentUser = new ThreadLocal<>();

    public static void setCurrentUser(UserInfo userInfo) {
        currentUser.set(userInfo);
    }

    public static UserInfo getCurrentUser() {
        return currentUser.get();
    }

    public static void clear() {
        currentUser.remove();
    }

    @Data
    public static class UserInfo {
        /**
         * 用户id
         */
        private String userId;

        /**
         * 用户名
         */
        private String userName;

        /**
         * 用户权限（县人员/市人员）
         */
        private String idCardName;

        /**
         * 具体县市级（滨州市发改委，滨州市发改委/惠民县发改局”）
         */
        private String orgRoute;

        /**
         * 是否是管理员
         */
        private Boolean isAdmin = Boolean.FALSE;

        /**
         * token
         */
        private String token;
    }

    /**
     * 获取用户数据权限范围
     * @return 返回数据权限标识字符串，null表示查看全部权限，否则返回具体的区域信息
     */
    public static String getUserDataScope() {
        UserInfo currentUser = UserContext.getCurrentUser();
        String idCardName = currentUser.getIdCardName();
        String orgRoute = currentUser.getOrgRoute();
        //针对登录账号:xuanrenyuan
        if (StringUtils.isBlank(orgRoute)&&"县人员".equals(idCardName)) {
            return "县人员";
        }
        if (StringUtils.isBlank(orgRoute)&&"管理员".equals(idCardName)) {
            currentUser.setIsAdmin(Boolean.TRUE);
            return "市人员";
        }
        if (StringUtils.isNotBlank(orgRoute)){
            String[] split = orgRoute.split("/");
            if (split.length>1){
                // 返回最后一级
                return split[split.length - 1];
            }else {
                return "市人员";
            }
        }
      throw new RuntimeException("组织权限异常");
    }


}
